package com.ghp.admin.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ghp.common.model.dto.user.UserLoginDTO;
import com.ghp.common.model.dto.user.UserQueryDTO;
import com.ghp.common.model.dto.user.UserRegisterDTO;
import com.ghp.common.model.dto.user.UserUpdateOwnerDTO;
import com.ghp.common.model.entity.User;
import com.ghp.common.model.vo.UserLoginVO;
import com.ghp.common.model.vo.UserVO;
import com.ghp.common.utils.response.ResponseResult;

/**
* @author ghp
* @description 针对表【tb_user(用户表)】的数据库操作Service
* @createDate 
*/
public interface UserService extends IService<User> {

    /**
     * 用户注册
     * @param userRegisterDTO
     * @return
     */
    ResponseResult userRegister(UserRegisterDTO userRegisterDTO);

    /**
     * 用户忘记密码
     * @param userRegisterDTO
     * @return
     */
    ResponseResult userForgetPassword(UserRegisterDTO userRegisterDTO);

    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     */
    ResponseResult<UserLoginVO> userLogin(UserLoginDTO userLoginDTO);

    /**
     * 分页查询用户列表
     * @param userQueryDTO
     * @return
     */
    ResponseResult<Page<User>> listUserByPage(UserQueryDTO userQueryDTO);

    /**
     * 分页查询用户列表（用户数据进行了脱敏）
     * @param userQueryDTO
     * @return
     */
    ResponseResult<Page<UserVO>> listUserVOByPage(UserQueryDTO userQueryDTO);

    /**
     * 更新个人信息
     * @param userUpdateOwnerDTO
     * @return
     */
    ResponseResult<Boolean> updateOwner(UserUpdateOwnerDTO userUpdateOwnerDTO);


    /**
     * 获取当前登录用户信息
     */
    UserLoginVO getUserLoginVO(Long userId);

}
